package ehsm

type CreateKeyPayload struct {
	KeySpec  int `json:"keyspec"`
	Origin   int `json:"origin"`
	KeyUsage int `json:"keyusage"`
}

type EncryptPayload struct {
	Cmk       string `json:"cmk"`
	PlainText string `json:"plaintext"`
	Aad       string `json:"aad"`
}

type DecryptPayload struct {
	Cmk        string `json:"cmk"`
	CipherText string `json:"ciphertext"`
	Aad        string `json:"aad"`
}

type GetPublicKeyPayload struct {
	Cmk string `json:"cmk"`
}

type GenerateDataKeyPayload struct {
	Cmk    string `json:"cmk"`
	KeyLen int    `json:"keylen"`
	Aad    string `json:"aad"`
}

type SignPayload struct {
	Cmk         string `json:"cmk"`
	Message     string `json:"message"`
	MessageType int8   `json:"message_type"`
	PaddingMode int8   `json:"padding_mode"`
	DigestMode  int8   `json:"digest_mode"`
}

type VerifyPayload struct {
	Cmk         string `json:"cmk"`
	Message     string `json:"message"`
	Signature   string `json:"signature"`
	MessageType int8   `json:"message_type"`
	PaddingMode int8   `json:"padding_mode"`
	DigestMode  int8   `json:"digest_mode"`
}

type AsymmetricEncryptPayload struct {
	Cmk         string `json:"cmk"`
	PlainText   string `json:"plaintext"`
	PaddingMode int8   `json:"padding_mode"`
}

type AsymmetricDecryptPayload struct {
	Cmk         string `json:"cmk"`
	CipherText  string `json:"ciphertext"`
	PaddingMode int8   `json:"padding_mode"`
}

type ExportDataKeyPayload struct {
	Cmk         string `json:"cmk"`
	UKey        string `json:"ukey"`
	Aad         string `json:"aad"`
	OldDataKey  string `json:"olddatakey"`
	PaddingMode int8   `json:"padding_mode,omitempty"`
}

type GenerateQuotePayload struct {
	Challenge string `json:"challenge"`
}

type VerifyQuotePayload struct {
	MrEnclave string `json:"mr_enclave"`
	MrSigner  string `json:"mr_signer"`
	Quote     string `json:"quote"`
	Nonce     string `json:"nonce"`
}

type UploadQuotePolicyPayload struct {
	MrEnclave string `json:"mr_enclave"`
	MrSigner  string `json:"mr_signer"`
}

type GetQuotePolicyPayload struct {
	PolicyId string `json:"policyId"`
}

type GenHmacPayload struct {
	Cmk     string `json:"cmk"`
	ApiKey  string `json:"apikey"`
	Payload string `json:"payload"`
}
